package com.yonyou.cyxdms.sysAuth.service.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.framework.bean.entity.base.BasePO;
import com.yonyou.cyx.function.utils.bean.BeanMapperUtil;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeSerializer;
import com.yonyou.cyxdms.framework.bean.dto.base.DMSBaseDTO;
import com.yonyou.cyxdms.sysAuth.service.entity.EquityPo;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;


/**
 * <p>
 * 公司表，车厂、经销商公司、改装厂公司等所
 * </p>
 *
 * @author quankk
 * @since 2019-08-26
 */

public class CompanyDTO extends DMSBaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * DEALER_ID
     */
    @ApiModelProperty(value = "公司id")
    private Integer companyId;

    @ApiModelProperty(value = "appId")
    private String appId;

    /**
     * 公司代码
     */
    @ApiModelProperty(value = "公司代码")
    private String companyCode;

    /**
     * 公司类型,和ORG_TYPE使用同一个类型
     */
    @ApiModelProperty(value = "公司类型,和ORG_TYPE使用同一个类型")
    private Integer companyType;

    /**
     * 公司中文全称
     */
    @ApiModelProperty(value = "公司中文全称")
    private String companyNameCn;

    /**
     * 公司简称中文
     */
    @ApiModelProperty(value = "公司简称中文")
    private String companyNameEn;

    /**
     * 公司简称中文
     */
    @ApiModelProperty(value = "公司简称中文")
    private String companyShortNameCn;

    /**
     * 公司简称英文
     */
    @ApiModelProperty(value = "公司简称英文")
    private String companyShortNameEn;

    /**
     * 组织ID，与组织间是一一对应
     */
    @ApiModelProperty(value = "组织ID，与组织间是一一对应")
    private Integer orgId;

    /**
     * 工厂ID
     */
    @ApiModelProperty(value = "工厂ID")
    private Integer factoryCompanyId;

    /**
     * 有效状态
     */
    @ApiModelProperty(value = "有效状态")
    private Integer validStatus;

    /**
     * 省份
     */
    @ApiModelProperty(value = "省份")
    private Integer provinceId;

    /**
     * 省份CODE
     */
    @ApiModelProperty(value = "省份CODE")
    private String provinceCode;

    /**
     * 省份名称
     */
    @ApiModelProperty(value = "省份名称")
    private String provinceName;

    /**
     * 城市
     */
    @ApiModelProperty(value = "城市")
    private Integer cityId;

    /**
     * 城市CODE
     */
    @ApiModelProperty(value = "城市CODE")
    private String cityCode;

    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称")
    private String cityName;

    /**
     * 区县
     */
    @ApiModelProperty(value = "区县")
    private Integer districtId;

    /**
     * 区县CODE
     */
    @ApiModelProperty(value = "区县CODE")
    private String districtCode;

    /**
     * 区县名称
     */
    @ApiModelProperty(value = "区县名称")
    private String districtName;

    /**
     * 公司地址中文
     */
    @ApiModelProperty(value = "公司地址中文")
    private String addressCn;

    /**
     * 公司地址英文
     */
    @ApiModelProperty(value = "公司地址英文")
    private String addressEn;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String phone;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    private String zipCode;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    private String fax;

    /**
     * 数据类型：经销商、集团
     */
    @ApiModelProperty(value = "数据类型：经销商、集团")
    private Integer dataType;

    /**
     * 数据库租户ID
     */
    @ApiModelProperty(value = "数据库租户ID")
    private String tenantId;

    /**
     * 来源日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "来源日期")
    private LocalDateTime sourceChangedAt;

    /**
     * 企业性质
     */
    @ApiModelProperty(value = "企业性质")
    private String property;

    /**
     * E_MAIL
     */
    @ApiModelProperty(value = "E_MAIL")
    private String eMail;

    /**
     * 成立日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @JSONField(format = "yyyy-MM-dd")
    @ApiModelProperty(value = "成立日期")
    private LocalDateTime establishmentDate;

    /**
     * 开业日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @JSONField(format = "yyyy-MM-dd")
    @ApiModelProperty(value = "开业日期")
    private LocalDateTime openDate;

    /**
     * 24小时热线电话
     */
    @ApiModelProperty(value = "24小时热线电话")
    private String hotLine;

    /**
     * 销售热线
     */
    @ApiModelProperty(value = "销售热线")
    private String salesLine;

    /**
     * 售后热线
     */
    @ApiModelProperty(value = "售后热线")
    private String serviceLine;

    /**
     * 营业时间
     */
    @ApiModelProperty(value = "营业时间")
    private String businessHours;

    /**
     * 建站日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "建站日期")
    private LocalDateTime createdDate;

    /**
     * 待开业，已开业，停业\r\n
     */
    @ApiModelProperty(value = "待开业，已开业，停业")
    private Integer dealerStatus;

    /**
     * 公司主页
     */
    @ApiModelProperty(value = "公司主页")
    private String companyHomepage;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 法人
     */
    @ApiModelProperty(value = "法人")
    private String representative;

    /**
     * 法人联系方式
     */
    @ApiModelProperty(value = "法人联系方式")
    private String representativeTel;

    /**
     * 法人邮箱
     */
    @ApiModelProperty(value = "法人邮箱")
    private String representativeEmail;

    /**
     * 注册资金（万元）
     */
    @ApiModelProperty(value = "注册资金（万元）")
    private BigDecimal registeredCapital;

    /**
     * 统一社会信用代码
     */
    @ApiModelProperty(value = "统一社会信用代码")
    private String unifiedSocialCreditCode;

    /**
     * 注册地址
     */
    @ApiModelProperty(value = "注册地址")
    private String registerAddress;

    /**
     * sap接口最后下发时间
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "sap接口最后下发时间")
    private LocalDateTime lastTimeSendToSap;

    /**
     * 备件SAP最后下发时间
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "备件SAP最后下发时间")
    private LocalDateTime lastTimeSendToPartSap;

    /**
     * 最后下发DMS时间
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "最后下发DMS时间")
    private LocalDateTime lastTimeSendToDms;

    /**
     * 是否主店
     */
    @ApiModelProperty(value = "是否主店")
    private Integer isMain;

    /**
     * 是否执行固化权限控制
     */
    @ApiModelProperty(value = "是否执行固化权限控制")
    private Integer isFixed;

    /**
     * 畅捷支付合作者id
     */
    @ApiModelProperty(value = "畅捷支付合作者id")
    private String partnerId;

    /**
     * 私钥
     */
    @ApiModelProperty(value = "私钥")
    private String privateKey;

    /**
     * 公钥
     */
    @ApiModelProperty(value = "公钥")
    private String publicKey;

//    /**
//     * RECORD_VERSION
//     */
//
//    private Integer recordVersion;
//
//    /**
//     * CREATED_BY
//     */
//
//    private String createdBy;
//
//    /**
//     * CREATED_AT
//     */
//    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
//    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
//    private LocalDateTime createdAt;
//
//    /**
//     * UPDATED_BY
//     */
//
//    private String updatedBy;
//
    /**
     * UPDATED_AT
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    @ApiModelProperty(value = "UPDATED_AT")
    private LocalDateTime updatedAt;
//
//
//    private Integer isDeleted;

    /**
     * 是否合并
     */
    @ApiModelProperty(value = "是否合并")
    private Integer isMerge;

    /**
     * 区分大小区
     */
    @ApiModelProperty(value = "区分大小区")
    private Integer isDisArea;

    /**
     * 作为登陆的ID
     */
    @ApiModelProperty(value = "作为登陆的ID")
    private String userCode;

    /**
     * 经销商类型
     */
    @ApiModelProperty(value = "经销商类型")
    private Integer dealerType;

    /**
     * 是否有微信登录
     */
    @ApiModelProperty(value = "是否有微信登录")
    private Integer wechatType;

    /**
     * 是否有短信发送
     */
    @ApiModelProperty(value = "是否有短信发送")
    private Integer smsType;
    /**
     * 关联股权结构
     */
    @ApiModelProperty(value = "关联股权结构")
    private List<EquityDto> insertEquityList;
    /**
     * 附件保存
     */
    @ApiModelProperty(value = "附件保存")
    private List<Map<String,String>> caseUrl;

    @ApiModelProperty(value = "门头图片")
    private List<Map<String,String>> storePics;
    /**
     * 经销商企业微信id
     */
    private String weChatId;
    /**
     * 经销商企微通讯录SECRET
     */
    private String weChatAddress;
    /**
     * 企微管理员姓名
     */
    private String weChatName;
    /**
     * 企微管理员手机号
     */
    private String weChatPhone;

    /**
     * 公司简介
     */
    private String companyDesc;

    public String getWeChatId() {
        return weChatId;
    }

    public void setWeChatId(String weChatId) {
        this.weChatId = weChatId;
    }

    public String getWeChatAddress() {
        return weChatAddress;
    }

    public void setWeChatAddress(String weChatAddress) {
        this.weChatAddress = weChatAddress;
    }

    public String getWeChatName() {
        return weChatName;
    }

    public void setWeChatName(String weChatName) {
        this.weChatName = weChatName;
    }

    public String getWeChatPhone() {
        return weChatPhone;
    }

    public void setWeChatPhone(String weChatPhone) {
        this.weChatPhone = weChatPhone;
    }

    public List<Map<String, String>> getCaseUrl() {
        return caseUrl;
    }

    public void setCaseUrl(List<Map<String, String>> caseUrl) {
        this.caseUrl = caseUrl;
    }

    public List<EquityDto> getInsertEquityList() {
        return insertEquityList;
    }

    public void setInsertEquityList(List<EquityDto> insertEquityList) {
        this.insertEquityList = insertEquityList;
    }


    /**
     * 客户分类（临时字段）
     */
    private String client;

    public String getClient() {
        return client;
    }

    public void setClient(String client) {
        this.client = client;
    }

    public Integer getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getCompanyCode() {
        return companyCode;
    }

    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode;
    }

    public Integer getCompanyType() {
        return companyType;
    }

    public void setCompanyType(Integer companyType) {
        this.companyType = companyType;
    }

    public String getCompanyNameCn() {
        return companyNameCn;
    }

    public void setCompanyNameCn(String companyNameCn) {
        this.companyNameCn = companyNameCn;
    }

    public String getCompanyNameEn() {
        return companyNameEn;
    }

    public void setCompanyNameEn(String companyNameEn) {
        this.companyNameEn = companyNameEn;
    }

    public String getCompanyShortNameCn() {
        return companyShortNameCn;
    }

    public void setCompanyShortNameCn(String companyShortNameCn) {
        this.companyShortNameCn = companyShortNameCn;
    }

    public String getCompanyShortNameEn() {
        return companyShortNameEn;
    }

    public void setCompanyShortNameEn(String companyShortNameEn) {
        this.companyShortNameEn = companyShortNameEn;
    }

    public Integer getOrgId() {
        return orgId;
    }

    public void setOrgId(Integer orgId) {
        this.orgId = orgId;
    }

    public Integer getFactoryCompanyId() {
        return factoryCompanyId;
    }

    public void setFactoryCompanyId(Integer factoryCompanyId) {
        this.factoryCompanyId = factoryCompanyId;
    }

    public Integer getValidStatus() {
        return validStatus;
    }

    public void setValidStatus(Integer validStatus) {
        this.validStatus = validStatus;
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }

    public String getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public Integer getCityId() {
        return cityId;
    }

    public void setCityId(Integer cityId) {
        this.cityId = cityId;
    }

    public String getCityCode() {
        return cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public Integer getDistrictId() {
        return districtId;
    }

    public void setDistrictId(Integer districtId) {
        this.districtId = districtId;
    }

    public String getDistrictCode() {
        return districtCode;
    }

    public void setDistrictCode(String districtCode) {
        this.districtCode = districtCode;
    }

    public String getDistrictName() {
        return districtName;
    }

    public void setDistrictName(String districtName) {
        this.districtName = districtName;
    }

    public String getAddressCn() {
        return addressCn;
    }

    public void setAddressCn(String addressCn) {
        this.addressCn = addressCn;
    }

    public String getAddressEn() {
        return addressEn;
    }

    public void setAddressEn(String addressEn) {
        this.addressEn = addressEn;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public Integer getDataType() {
        return dataType;
    }

    public void setDataType(Integer dataType) {
        this.dataType = dataType;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public LocalDateTime getSourceChangedAt() {
        return sourceChangedAt;
    }

    public void setSourceChangedAt(LocalDateTime sourceChangedAt) {
        this.sourceChangedAt = sourceChangedAt;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }

    public LocalDateTime getEstablishmentDate() {
        return establishmentDate;
    }

    public void setEstablishmentDate(LocalDateTime establishmentDate) {
        this.establishmentDate = establishmentDate;
    }

    public LocalDateTime getOpenDate() {
        return openDate;
    }

    public void setOpenDate(LocalDateTime openDate) {
        this.openDate = openDate;
    }

    public String getHotLine() {
        return hotLine;
    }

    public void setHotLine(String hotLine) {
        this.hotLine = hotLine;
    }

    public String getSalesLine() {
        return salesLine;
    }

    public void setSalesLine(String salesLine) {
        this.salesLine = salesLine;
    }

    public String getServiceLine() {
        return serviceLine;
    }

    public void setServiceLine(String serviceLine) {
        this.serviceLine = serviceLine;
    }

    public String getBusinessHours() {
        return businessHours;
    }

    public void setBusinessHours(String businessHours) {
        this.businessHours = businessHours;
    }

    public LocalDateTime getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(LocalDateTime createdDate) {
        this.createdDate = createdDate;
    }

    public Integer getDealerStatus() {
        return dealerStatus;
    }

    public void setDealerStatus(Integer dealerStatus) {
        this.dealerStatus = dealerStatus;
    }

    public String getCompanyHomepage() {
        return companyHomepage;
    }

    public void setCompanyHomepage(String companyHomepage) {
        this.companyHomepage = companyHomepage;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getRepresentative() {
        return representative;
    }

    public void setRepresentative(String representative) {
        this.representative = representative;
    }

    public String getRepresentativeTel() {
        return representativeTel;
    }

    public void setRepresentativeTel(String representativeTel) {
        this.representativeTel = representativeTel;
    }

    public String getRepresentativeEmail() {
        return representativeEmail;
    }

    public void setRepresentativeEmail(String representativeEmail) {
        this.representativeEmail = representativeEmail;
    }

    public BigDecimal getRegisteredCapital() {
        return registeredCapital;
    }

    public void setRegisteredCapital(BigDecimal registeredCapital) {
        this.registeredCapital = registeredCapital;
    }

    public String getUnifiedSocialCreditCode() {
        return unifiedSocialCreditCode;
    }

    public void setUnifiedSocialCreditCode(String unifiedSocialCreditCode) {
        this.unifiedSocialCreditCode = unifiedSocialCreditCode;
    }

    public String getRegisterAddress() {
        return registerAddress;
    }

    public void setRegisterAddress(String registerAddress) {
        this.registerAddress = registerAddress;
    }

    public LocalDateTime getLastTimeSendToSap() {
        return lastTimeSendToSap;
    }

    public void setLastTimeSendToSap(LocalDateTime lastTimeSendToSap) {
        this.lastTimeSendToSap = lastTimeSendToSap;
    }

    public Integer getIsMain() {
        return isMain;
    }

    public void setIsMain(Integer isMain) {
        this.isMain = isMain;
    }

    public Integer getIsFixed() {
        return isFixed;
    }

    public void setIsFixed(Integer isFixed) {
        this.isFixed = isFixed;
    }

    public String getPartnerId() {
        return partnerId;
    }

    public void setPartnerId(String partnerId) {
        this.partnerId = partnerId;
    }

    public String getPrivateKey() {
        return privateKey;
    }

    public void setPrivateKey(String privateKey) {
        this.privateKey = privateKey;
    }

    public String getPublicKey() {
        return publicKey;
    }

    public void setPublicKey(String publicKey) {
        this.publicKey = publicKey;
    }

    public Integer getIsMerge() {
        return isMerge;
    }

    public void setIsMerge(Integer isMerge) {
        this.isMerge = isMerge;
    }

    public Integer getIsDisArea() {
        return isDisArea;
    }

    public void setIsDisArea(Integer isDisArea) {
        this.isDisArea = isDisArea;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public Integer getDealerType() {
        return dealerType;
    }

    public void setDealerType(Integer dealerType) {
        this.dealerType = dealerType;
    }

    public Integer getWechatType() {
        return wechatType;
    }

    public void setWechatType(Integer wechatType) {
        this.wechatType = wechatType;
    }

    public Integer getSmsType() {
        return smsType;
    }

    public void setSmsType(Integer smsType) {
        this.smsType = smsType;
    }

    public LocalDateTime getLastTimeSendToPartSap() {
        return lastTimeSendToPartSap;
    }

    public void setLastTimeSendToPartSap(LocalDateTime lastTimeSendToPartSap) {
        this.lastTimeSendToPartSap = lastTimeSendToPartSap;
    }

    public LocalDateTime getLastTimeSendToDms() {
        return lastTimeSendToDms;
    }

    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }

    public void setLastTimeSendToDms(LocalDateTime lastTimeSendToDms) {
        this.lastTimeSendToDms = lastTimeSendToDms;
    }

    public List<Map<String, String>> getStorePics() {
        return storePics;
    }

    public void setStorePics(List<Map<String, String>> storePics) {
        this.storePics = storePics;
    }

    public String getCompanyDesc() {
        return companyDesc;
    }

    public void setCompanyDesc(String companyDesc) {
        this.companyDesc = companyDesc;
    }
}
